//
//  SDKTool.m
//  sr01sdkProject
//
//  Created by Linktop on 2022/7/5.
//

#import "SDKTool.h"
#import "oem_auth.h"

@implementation SDKTool


/// 电压转电量
/// @param battery
+(int)toBatteryLevel:(NSInteger)battery IsCharge:(int)isCharge IsWireness:(BOOL)isWireness
{
    if (!isWireness) { // 有线充电
        battery -= 100;
        if (battery >= 4130) {
            return 100;
        }
    }
    
    
    // 没充电
    if (battery >= 4170) {
        return  100;
    } else if (battery >= 4125) {
        return  99;
    } else if (battery >= 4111) {
        return  98;
    } else if (battery >= 4099) {
        return  97;
    } else if (battery >= 4088) {
        return   96;
    } else if (battery >= 4078) {
        return  95;
    } else if (battery >= 4058) {
        return   94;
    } else if (battery >= 4068) {
        return   93;
    } else if (battery >= 4049) {
        return  92;
    } else if (battery >= 4039) {
        return   91;
    } else if (battery >= 4031) {
        return  90;
    } else if (battery >= 4022) {
        return  89;
    } else if (battery >= 4014) {
        return   88;
    } else if (battery >= 4007) {
        return   87;
    } else if (battery >= 3999) {
        return  86;
    } else if (battery >= 3990) {
        return  85;
    } else if (battery >= 3981) {
        return   84;
    } else if (battery >= 3970) {
        return  83;
    } else if (battery >= 3959) {
        return  82;
    } else if (battery >= 3947) {
        return  81;
    } else if (battery >= 3936) {
        return   80;
    } else if (battery >= 3925) {
        return  79;
    } else if (battery >= 3916) {
        return   78;
    } else if (battery >= 3908) {
        return  77;
    } else if (battery >= 3901) {
        return  76;
    } else if (battery >= 3894) {
        return   75;
    } else if (battery >= 3887) {
        return   74;
    } else if (battery >= 3882) {
        return  73;
    } else if (battery >= 3876) {
        return   72;
    } else if (battery >= 3870) {
        return   71;
    } else if (battery >= 3864) {
        return   70;
    } else if (battery >= 3857) {
        return  69;
    } else if (battery >= 3851) {
        return  68;
    } else if (battery >= 3844) {
        return  67;
    } else if (battery >= 3838) {
        return   66;
    } else if (battery >= 3833) {
        return   65;
    } else if (battery >= 3827) {
        return  64;
    } else if (battery >= 3821) {
        return   63;
    } else if (battery >= 3816) {
        return  62;
    } else if (battery >= 3810) {
        return  61;
    } else if (battery >= 3805) {
        return  60;
    } else if (battery >= 3799) {
        return   59;
    } else if (battery >= 3794) {
        return   58;
    } else if (battery >= 3789) {
        return   57;
    } else if (battery >= 3784) {
        return   56;
    } else if (battery >= 3780) {
        return  55;
    } else if (battery >= 3775) {
        return   54;
    } else if (battery >= 3770) {
        return   53;
    } else if (battery >= 3766) {
        return   52;
    } else if (battery >= 3761) {
        return   51;
    } else if (battery >= 3757) {
        return   50;
    } else if (battery >= 3753) {
        return   49;
    } else if (battery >= 3749) {
        return   48;
    } else if (battery >= 3744) {
        return   47;
    } else if (battery >= 3741) {
        return  46;
    } else if (battery >= 3737) {
        return  45;
    } else if (battery >= 3733) {
        return  44;
    } else if (battery >= 3729) {
        return   43;
    } else if (battery >= 3726) {
        return  42;
    } else if (battery >= 3722) {
        return   41;
    } else if (battery >= 3718) {
        return  40;
    } else if (battery >= 3715) {
        return  39;
    } else if (battery >= 3711) {
        return   38;
    } else if (battery >= 3708) {
        return   37;
    } else if (battery >= 3705) {
        return   36;
    } else if (battery >= 3702) {
        return   35;
    } else if (battery >= 3699) {
        return   34;
    } else if (battery >= 3696) {
        return   33;
    } else if (battery >= 3692) {
        return   32;
    } else if (battery >= 3689) {
        return   31;
    } else if (battery >= 3685) {
        return   30;
    } else if (battery >= 3682) {
        return   29;
    } else if (battery >= 3678) {
        return   28;
    } else if (battery >= 3674) {
        return  27;
    } else if (battery >= 3670) {
        return  26;
    } else if (battery >= 3666) {
        return  25;
    } else if (battery >= 3661) {
        return  24;
    } else if (battery >= 3656) {
        return  23;
    } else if (battery >= 3651) {
        return   22;
    } else if (battery >= 3646) {
        return  21;
    } else if (battery >= 3642) {
        return  20;
    } else if (battery >= 3637) {
        return  19;
    } else if (battery >= 3633) {
        return  18;
    } else if (battery >= 3628) {
        return   17;
    } else if (battery >= 3624) {
        return  16;
    } else if (battery >= 3618) {
        return   15;
    } else if (battery >= 3613) {
        return   14;
    } else if (battery >= 3606) {
        return   13;
    } else if (battery >= 3599) {
        return   12;
    } else if (battery >= 3591) {
        return   11;
    } else if (battery >= 3581) {
        return   10;
    } else if (battery >= 3569) {
        return   9;
    } else if (battery >= 3553) {
        return   8;
    } else if (battery >= 3535) {
        return   7;
    } else if (battery >= 3508) {
        return   6;
    } else if (battery >= 3474) {
        return   5;
    } else if (battery >= 3435) {
        return   4;
    } else if (battery >= 3379) {
        return   3;
    } else if (battery >= 3315) {
        return   2;
    } else if (battery >= 3210) {
        return   1;
    }
    return   0;
    
    
    
  
        
   
}

+(NSString *)macAddressFromBleAvdData:(NSDictionary *)advertisementData
{
    // mac 地址拼接
    NSString *macString = nil;
    NSData * manufacturerData = advertisementData[@"kCBAdvDataManufacturerData"];
    NSString *advertisementName = [advertisementData objectForKey:@"kCBAdvDataLocalName"];

    if (manufacturerData.length >= 4) {
        NSData *macDataLowBit = [manufacturerData subdataWithRange:NSMakeRange(0, 4)];
        
        Byte *byte = (Byte *)[macDataLowBit bytes];
        macString = [NSString  stringWithFormat:@"%.2X:%.2X:%.2X:%.2X", byte[0], byte[1], byte[2], byte[3]];
        if (advertisementName.length>=4) {
            NSString *macString_high = [advertisementName substringWithRange:NSMakeRange(advertisementName.length - 4, 4)];
            NSMutableString *mutStr = [NSMutableString stringWithString:macString_high];
            [mutStr insertString:@":" atIndex:2];
            macString = [NSString stringWithFormat:@"%@:%@", macString, mutStr];

        }
    }
    return macString;
}

+(NSData *)oemAesDecreat:(NSData *)snData Company:(NSString *)company R1:(NSData *)r1
{
    // 解密
    NSData *resData = nil;
    char outBytes[r1.length];
    memset(outBytes, 0, r1.length);
    int ret = aes128_decrypt((char *)[snData bytes], snData.length,
                             (char *)[company cStringUsingEncoding:NSASCIIStringEncoding],
                             company.length,
                             (char *)[r1 bytes],
                             r1.length,
                             outBytes);
    
    if (ret == 0) { // 成功
        resData = [NSData dataWithBytes:outBytes length:r1.length];
    }
    
    return resData;
}

@end
